#include "../include/test_framework.h"
#include <sys/stat.h>
#include <fcntl.h>

// 后台服务主程序
int main(int argc, char *argv[]) {
    // 检查是否以daemon模式启动
    if (argc > 1 && strcmp(argv[1], "--daemon") == 0) {
        printf("启动AI Glass后台服务...\n");
        
        // 创建守护进程
        pid_t pid = fork();
        if (pid < 0) {
            perror("fork失败");
            return 1;
        }
        
        if (pid > 0) {
            // 父进程退出
            printf("后台服务已启动 (PID: %d)\n", pid);
            printf("使用命令: ai_glass_cmd <AT命令> 来发送测试命令\n");
            return 0;
        }
        
        // 子进程成为守护进程
        setsid();  // 创建新会话
        chdir("/"); // 改变工作目录
        
        // 关闭标准文件描述符
        close(STDIN_FILENO);
        close(STDOUT_FILENO);
        close(STDERR_FILENO);
        
        // 重定向到/dev/null
        open("/dev/null", O_RDONLY); // stdin
        open("/dev/null", O_WRONLY); // stdout  
        open("/dev/null", O_WRONLY); // stderr
        
        // 启动后台服务
        return start_background_service();
    }
    
    // 默认以交互模式启动 (仅用于调试)
    printf("=======================================\n");
    printf("  AI Glass Linux 测试框架 v1.0.0\n");
    printf("  警告: 交互模式会接管终端输入!\n");
    printf("  建议使用: %s --daemon\n", argv[0]);
    printf("=======================================\n");
    
    if (argc > 1) {
        if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-h") == 0) {
            printf("\n使用方法:\n");
            printf("  %s --daemon        # 启动后台服务 (推荐)\n", argv[0]);
            printf("  %s                 # 交互模式 (调试用)\n", argv[0]);
            printf("  %s --help          # 显示此帮助信息\n", argv[0]);
            printf("\n后台服务模式:\n");
            printf("  启动服务: %s --daemon\n", argv[0]);
            printf("  发送命令: ai_glass_cmd AT+AIGLASSPHOTO\n");
            printf("  停止服务: ai_glass_cmd AT+EXIT\n");
            printf("  检查状态: ai_glass_cmd AT+STATUS\n");
            return 0;
        }
        
        if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-v") == 0) {
            printf("\nAI Glass Linux 测试框架 v1.0.0\n");
            printf("编译时间: %s %s\n", __DATE__, __TIME__);
            printf("支持平台: Linux x86_64\n");
            return 0;
        }
    }
    
    // 交互模式 (原有实现，仅用于调试)
    printf("\n按回车键继续，或Ctrl+C退出...\n");
    getchar();
    
    // 初始化测试框架
    if (test_framework_init() != 0) {
        fprintf(stderr, "测试框架初始化失败\n");
        return 1;
    }
    
    // 启动测试框架
    if (test_framework_start() != 0) {
        fprintf(stderr, "测试框架启动失败\n");
        test_framework_cleanup();
        return 1;
    }
    
    // 主循环 - 等待框架运行结束
    while (g_test_framework.running) {
        sleep(1);
    }
    
    // 清理测试框架
    test_framework_cleanup();
    
    printf("\n感谢使用 AI Glass Linux 测试框架！\n");
    return 0;
}